package com.example.taobaounion.ui.custom;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;

import com.example.taobaounion.R;

/*
自动轮播
 */
public class AutoLoopViewPager extends ViewPager {

    //切换间隔时长，单位毫秒
    public static final long DEFAULT_DURATION=3000;
    private long mDuration=DEFAULT_DURATION;

    public AutoLoopViewPager(@NonNull  Context context){
        this(context,null);
    }

    public AutoLoopViewPager(@NonNull  Context context, @Nullable  AttributeSet attrs) {

        super(context, attrs);
        //读取属性
        init(context,attrs);
    }

    private void init(Context context, AttributeSet attrs) {
        TypedArray t = context.obtainStyledAttributes(attrs, R.styleable.AutoLoopStyle);
        //获取xml属性
        mDuration = t.getInteger(R.styleable.AutoLoopStyle_duration, (int) DEFAULT_DURATION);
        //LogUtils.d(this,"设置的时间间隔----->"+mDuration);
        //回收
        t.recycle();
    }

    public void setDefaultDuration(int duration){
        this.mDuration=duration;
    }
    private boolean isLoop=false;

    public void startLoop(){
        isLoop=true;
        //先拿到当前的位置
        post(mTask);
    }

    private Runnable mTask=new Runnable() {
        @Override
        public void run() {
            int currentItem = getCurrentItem();//返回当前选中的Page
            currentItem++;
            setCurrentItem(currentItem);//设置当前的page
            //LogUtils.d(AutoLoopViewPager.this,"loading.......");
            if(isLoop){
                postDelayed(this,mDuration);
            }
        }
    };

    public void stopLoop(){
        isLoop=false;
        removeCallbacks(mTask);//如果不对线程进行销毁的话，当你pause后，他可能刚执行完postDelayed(this,3000);
        //会再次执行一次，才isLoop为false,这时才不会轮播，所以要对其销毁
    }
}
